//一个*.cc文件作为一个编译单元的
//就是一个独立的模块
//
//而在该模块中，没有关于add的函数调用
//在实际编译时，就不会有相应的源码出现

//函数模板的实现
template <class T>
T add(T x, T y)
{
    return x + y;
}

int test1()
{
    int a = 10, b = 20;
    //这里多了一个add的函数的实际调用
    //那么当编译器扫描到这里的时候，就会
    //启动模板参数推导的机制，生成一个int型的add函数
    return add(a, b);
}
